package com.sunseaypw.web.listener;

import com.sunseaypw.web.WebBase;

import jakarta.servlet.ServletContextListener;
import jakarta.servlet.annotation.WebListener;
/*一个Web服务器可以运行一个或多个WebApp，对于每个WebApp，Web服务器都会为其创建一个全局唯一的ServletContext实例，
   我们在ContextListner里面编写的两个回调方法实际上对应的就是ServletContext实例的创建和销毁：
   ServletRequest、HttpSession等很多对象也提供getServletContext()方法获取到同一个ServletContext实例。
   ServletContext实例最大的作用就是设置和共享全局信息。
   此外，ServletContext还提供了动态添加Servlet、Filter、Listener等功能，
     它允许应用程序在运行期间动态添加一个组件，虽然这个功能不是很常用。
*/
@WebListener
public class ContextListner implements ServletContextListener {
    @Override
    public void contextInitialized(jakarta.servlet.ServletContextEvent sce) {
        //Web服务器保证在contextInitialized()执行后，才会接受用户的HTTP请求
        System.out.println(String.format("%s ContextListner-contextInitialized  线程：%s  %s %s"
            ,WebBase.getNowTime(), Thread.currentThread().getName()
            ,sce.getSource().toString(),sce.getServletContext().toString()));
    }
    
    @Override
    public void contextDestroyed(jakarta.servlet.ServletContextEvent sce) {
        System.out.println(String.format("%s ContextListner-contextDestroyed  线程：%s",WebBase.getNowTime(), Thread.currentThread().getName()));
    }
}
